<?php

// asistencias Model

// No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.application.component.model' );


class ReghsModelAsistencias extends JModel {
    /**
     *
     * @var array
     */
    var $_data;

    /**
     * Returns the query
     * @return string The query to be used to retrieve the rows from the database
     */
    function _buildQuery($agente) {
        $query = " SELECT * FROM #__asistencia_diaria WHERE agente_id = $agente ORDER BY fecha, emitida DESC";
        return $query;
    }

    //recupero un cargo dado una resolucion y agente
    function getCargo($resolucion, $agente) {
        $db =& JFactory::getDBO();
        $query = "select c.nombre from #__resoluciones_cargos r, #__cargos c where r.resoluciones_id = $resolucion and r.cargo_id = c.cargo_id and r.agente_id = $agente";
        $db->setQuery( $query );
        //devuelve un arreglo con todas las filas de la consulta
        $rows = $db->loadResult();
        return $rows;
    }

    //recupero una asignatura dado una resolucion y agente
    function getAsignatura($resolucion, $agente) {
        $db =& JFactory::getDBO();
        $query = "select m.nombre from #__resoluciones_cargos r, #__materias m where r.resoluciones_id = $resolucion and r.materia_id = m.materia_id and r.agente_id = $agente";
        $db->setQuery( $query );
        //devuelve un arreglo con todas las filas de la consulta
        $rows = $db->loadResult();
        return $rows;
    }

    // agregado para la paginacion
    //agregado con los filtros
    function getTotal($resolucion=null,$tema=null,$fecha_ini=null,$fecha_fin=null,$est_asistencia=null) {
        $db =& JFactory::getDBO();
        $usuario =& JFactory::getUser();
        $agente = $usuario->get('id');

        if($fecha_ini and !$fecha_fin) {
            $where = " and fecha >= STR_TO_DATE('$fecha_ini','%Y-%m-%d')";
        }
        elseif (!$fecha_ini and $fecha_fin) {
            $where = " and fecha <= STR_TO_DATE('$fecha_fin','%Y-%m-%d')";
        }
        elseif (!$fecha_ini and !$fecha_fin) {
            $where = " and 1=1";
        }
        elseif ($fecha_ini and $fecha_fin) {
            $where = " and fecha between STR_TO_DATE('$fecha_ini','%Y-%m-%d') and STR_TO_DATE('$fecha_fin','%Y-%m-%d')";
        }

        if ($est_asistencia == 1) {
            $estado = " and emitida is not null";
        }
        elseif ($est_asistencia == 2) {
            $estado = " and emitida is null";
        }
        elseif ($est_asistencia == 0) {
            $estado = "";
        }

        $query = " SELECT count(*) FROM #__asistencia_diaria
                   WHERE agente_id = $agente"
                .($resolucion?" and resoluciones_cargos_id=$resolucion":"")
                .($tema?" and tema like '%$tema%'":"")
                .$where
                .$estado
                ." ORDER BY fecha DESC";
        $db->setQuery($query);
        return $db->loadResult();
    }

    //obtiene el numero maximo de registros en la tabla
//    function getTotal() {
//        $db =& JFactory::getDBO();
//        $usuario =& JFactory::getUser();
//        $agente = $usuario->get('id');
//
//        $query = "SELECT COUNT(*) FROM #__asistencia_diaria WHERE agente_id = $agente";
//        $db->setQuery($query);
//        return $db->loadResult();
//    }

    //agregado para la paginacion
    //agregado con los filtros
    function getData($limitstart,$limit,$resolucion=null,$tema=null,$fecha_ini=null,$fecha_fin=null,$est_asistencia=null) {
        $db =& JFactory::getDBO();
        $usuario =& JFactory::getUser();
        $agente = $usuario->get('id');

        if($fecha_ini and !$fecha_fin) {
            $where = " and fecha >= STR_TO_DATE('$fecha_ini','%Y-%m-%d')";
        }
        elseif (!$fecha_ini and $fecha_fin) {
            $where = " and fecha <= STR_TO_DATE('$fecha_fin','%Y-%m-%d')";
        }
        elseif (!$fecha_ini and !$fecha_fin) {
            $where = " and 1=1";
        }
        elseif ($fecha_ini and $fecha_fin) {
            $where = " and fecha between STR_TO_DATE('$fecha_ini','%Y-%m-%d') and STR_TO_DATE('$fecha_fin','%Y-%m-%d')";
        }

        if ($est_asistencia == 1) {
            $estado = " and emitida is not null";
        }
        elseif ($est_asistencia == 2) {
            $estado = " and emitida is null";
        }
        elseif ($est_asistencia == 0) {
            $estado = "";
        }

        $query = " SELECT * FROM #__asistencia_diaria
                   WHERE agente_id = $agente"
                .($resolucion?" and resoluciones_cargos_id=$resolucion":"")
                .($tema?" and tema like '%$tema%'":"")
                .$where
                .$estado
                ." ORDER BY fecha DESC";
        $db->setQuery( $query, $limitstart, $limit );
        return $db->loadObjectList();
    }

    //agregado para setear la fecha de emision de las asistencias
    function setFechaEmision($ids) {
        $db =& JFactory::getDBO();
        $usuario =& JFactory::getUser();
        $agente = $usuario->get('id');

        $query = " UPDATE #__asistencia_diaria SET emitida = curdate() WHERE asistencia_diaria_id IN ($ids) AND agente_id = $agente";
        $db->setQuery( $query);
        $db->query();

    }

}
?>
